﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados_;
using System.ComponentModel;

namespace Negocios
{
    [DataObject]
    public class FaturaBOMetodos
    {
        [DataObjectMethod(DataObjectMethodType.Insert, true)]
        public bool inserir(FaturaBO faturaBO)
        {
            try
            {
                ComprarSQL comprarSQL = new ComprarSQL();
                FaturaVO faturaVO = new FaturaVO();
                faturaVO.Id_Compra = faturaBO.Id_Compra;
                faturaVO.Cliente = faturaBO.Cliente.Cpf;
                faturaVO.Programacao = faturaBO.Programacao.Id;
                faturaVO.Preco = faturaBO.Preco;
                faturaVO.Data = faturaBO.Data;
                return (comprarSQL.inserir(faturaVO) == 1);
            }
            catch (Exception ex)
            {
                throw new BOException("Não foi possivel adicionar a compra a lista: " + ex.Message);
            }
        }

        [DataObjectMethod(DataObjectMethodType.Delete, true)]
        public bool remover(FaturaBO faturaBO)
        {
            try
            {
                ComprarSQL comprarSQL = new ComprarSQL();
                return (comprarSQL.remover(faturaBO.Id_Compra) == 1);
            }
            catch (Exception ex)
            {
                throw new BOException("Não foi possivel remover a compra a lista.");
            }
        }

        [DataObjectMethod(DataObjectMethodType.Select, true)]
        public FaturaBO consultarPorId(int id)
        {
            FaturaVO faturaVO = new FaturaVO();
            FaturaBO faturaBO = new FaturaBO();
            ComprarSQL comprarSQL = new ComprarSQL();
            try
            {
                faturaVO = comprarSQL.consultarPorId(id);
                faturaBO.Id_Compra = faturaVO.Id_Compra;
                faturaBO.Cliente = new ClienteBO(); faturaBO.Cliente.Cpf = faturaVO.Cliente;
                faturaBO.Programacao = new ProgramacaoBO(); faturaBO.Programacao.Id = faturaVO.Programacao;
                faturaBO.Preco = faturaVO.Preco;
                faturaBO.Data = faturaVO.Data;

                return faturaBO;
            }
            catch (Exception ex)
            {
                throw new BOException("Não foi possivel realizar a consulta: " + ex.Message);
            }
        }

        public List<FaturaBO> ConsultarPorCliente(string cliente)
        {
           List<FaturaVO> lFaturaVO;
           List<FaturaBO> lFaturaBO = new List<FaturaBO>();
            ComprarSQL comprarSQL = new ComprarSQL();

            try
            {
                lFaturaVO = comprarSQL.ConsultarPorCliente(cliente);

                foreach (FaturaVO faturaVO in lFaturaVO)
                {
                    FaturaBO faturaBO = new FaturaBO();
                    faturaBO.Id_Compra = faturaVO.Id_Compra;
                    faturaBO.Cliente = new ClienteBO(); faturaBO.Cliente.Cpf = faturaVO.Cliente;
                    faturaBO.Programacao = new ProgramacaoBO(); faturaBO.Programacao.Id = faturaVO.Programacao;
                    faturaBO.Preco = faturaVO.Preco;
                    faturaBO.Data = faturaVO.Data;
                    lFaturaBO.Add(faturaBO);
                }

                return lFaturaBO;

            }
            catch (Exception ex)
            {
                throw new BOException("Não foi possivel realizar a consulta: " + ex.Message);

            }

        }
    }
}